package com.yuandian.customer.perception.service;

import com.yuandian.api.customer_perception.po.SystemAnalysisParams;
import com.yuandian.api.customer_perception.po.SystemCompareTrendParams;
import com.yuandian.bpm.common.core.util.R;

import javax.servlet.http.HttpServletResponse;

/**
 * 说明：系统分析service接口
 * @Author yanjun
 * @Date 2021/8/11 13:37
 */
public interface ISystemAnalysisService {

    /**
     * 查询系统分析概况
     * @param params 系统分析请求参数
     * @return 通用返回对象
     */
     R<Object> querySystemAnalysisOverview(SystemAnalysisParams params);

    /**
     * 查询系统告警占比
     * @param params 系统分析请求参数
     * @return 通用返回对象
     */
     R<Object> querySystemAlarmProportion(SystemAnalysisParams params);

    /**
     * 查询系统指标趋势
     * @param params 系统分析请求参数
     * @return 通用返回对象
     */
     R<Object> querySystemIndicatorTrend(SystemAnalysisParams params);

    /**
     * 查询系统对比趋势
     * @param params 系统对比趋势请求参数
     * @return 通用返回对象
     */
     R<Object> querySystemCompareTrend(SystemCompareTrendParams params);

    /**
     * 分页查询系统业务总览
     * @param params 系统分析请求参数
     * @return 通用返回对象
     */
     R<Object> querySystemBusinessOverview(SystemAnalysisParams params);

    /**
     * 导出系统业务总览列表
     * @param params 系统分析请求参数
     * @param response 响应上下文
     */
    void exportSystemBusinessOverview(SystemAnalysisParams params, HttpServletResponse response) throws Exception;

    /**
     * 查询业务指标TOPN
     * @param params 系统分析请求参数
     * @return 通用返回对象
     */
     R<Object> queryBusinessIndicatorTopN(SystemAnalysisParams params);

    /**
     * 分页查询系统操作员总览
     * @param params 系统分析请求参数
     * @return 通用返回对象
     */
     R<Object> querySystemOperatorOverview(SystemAnalysisParams params);

    /**
     * 导出系统操作员总览列表
     * @param params 系统分析请求参数
     * @param response 响应上下文
     */
    void exportSystemOperatorOverview(SystemAnalysisParams params, HttpServletResponse response) throws Exception;

    /**
     * 查询操作员业务办理量TOPN
     * @param params 系统分析请求参数
     * @return 通用返回对象
     */
     R<Object> queryOperatorCompleteTopN(SystemAnalysisParams params);

    /**
     * 查询营业员业务办理失败分布
     * @param params 系统分析请求参数
     * @return 通用返回对象
     */
     R<Object> queryOperatorFailBusiness(SystemAnalysisParams params);

    /**
     * 查询营业员办理业务告警类型分布
     * @param params 系统分析请求参数
     * @return 通用返回对象
     */
     R<Object> queryOperatorBusinessAlarm(SystemAnalysisParams params);
}
